package com.czy;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

/**
 * 队列的消费者
 * 同步消费者【一般不推荐】
 *
 */
public class JmsQueueConsumer {

	private static String brokerURL=  "tcp://127.0.0.1:61616"; //在activemq/conf/activemq.xml里面找
	private static String queueName="queue-hello";

	public static void main(String[] args) throws JMSException {
		// 第一步：创建ConnectionFactory对象，需要指定服务端ip及端口号。
		ConnectionFactory factory=new ActiveMQConnectionFactory(brokerURL);
		// 第二步：使用ConnectionFactory对象创建一个Connection对象。
		Connection connection = factory.createConnection();
		// 第三步：开启连接，调用Connection对象的start方法。
		connection.start();
		// 第四步：使用Connection对象创建一个Session对象。  第一个参数是是否开启事务   第二参数是接收者的签收状态
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

		// 第五步：使用Session对象创建一个Destination对象（topic、queue），此处创建一个Queue对象。
		Queue queue=session.createQueue(queueName);
		// 第六步：使用Session对象创建一个Consumer对象。
		MessageConsumer messageConsumer = session.createConsumer(queue);


		// 第七步：监听消息
//		Message message = messageConsumer.receive();
		Message message = messageConsumer.receive(2000);//一直阻塞
//		while(true) {
//			if(message instanceof TextMessage) {
//				TextMessage textMessage=(TextMessage) message;
//				System.out.println("接收到消息，消息内容为:"+textMessage.getText());
//			}
//			message = messageConsumer.receive(2000);//继续监听   2秒内没有消息过来就不再监听
//		}

		session.close();
		messageConsumer.close();
		connection.close();
		System.out.println("消息接收完成.....");
	}

}
